Feature: Create and manage projects

Scenario: Defining Projects
* projects have a short name (id)
* projects have a name
* projects have a short description
* projects have one or more members
* projects have one or more leaders
* projects have many tasks
* projects have one or more Tracking Features
* projects have an Active or Inactive status

Scenario: Create a new project
Given the user is identified
When the user writes a project name
And specifies a project short name
And the short name is unique
And the short name has no white spaces
And the short name has only uppercase letters and digits
And specifies a short description
And submits the project
Then the project short name matches the one entered
And the project name matches the one entered
And the description matches the one entered
And the user appears as a project member
And the user is the project leader
And the tasks list is empty
And the project status is Active
And the features list contains Tasks
And the features list contains Talks
And the features list contains Timesheets

Scenario: Adding a project member
Given the user is identified
And an existing project
And the user is a project leader
When the user adds one or more team members
Then all users are added to the members list
And a mail notification is sent to each new member

Scenario: Removing a project member
Given the user is identified
And an existing project
And the user is a project leader
When the user removes a project member
And that person is not himself
Then the member is removed from the list

Scenario: Adding a project leader
Given the user is identified
And an existing project
And the user is a project leader
When the user adds one or more team leaders
Then all users are added to the leaders list
And a mail notification is sent to each new leader

Scenario: Removing a project leader
Given the user is identified
And an existing project
And the user is a project leader
When the user removes a project leader
And that person is not himself
Then the leader is removed from the list

Scenario: Add a tracking Feature
Given the user is identified
And an existing project
And the user is a project leader
And there are features available for the project
When the user adds one or more features
Then all the features are added to the list

Scenario: Remove a tracking Feature
Given the user is identified
And an existing project
And the user is a project leader
And the project has two or more features
When the user removes a feature
Then the feature is removed from the list
# Existing information related to that feature (tasks, talks, comments, etc) is not removed
# only the access to those is prevented.

Scenario: Deactivate a project
Given the user is identified
And an existing project
And the user is a project leader
When the user deactivates the project
Then the project status is Inactive
And all further changes to the project are rejected
And in next login, no one is allowed to enter the project

@wip
Scenario: Reactivate a project

@wip
Scenario: Deleting a project